[LeetCode] 442 - Find All Duplicates in an Array

題意

一陣列符合 1 ≤ a[i] ≤ n 且元素皆為一個或兩個,找出所有含有兩個的元素。

解法

遍歷所有元素並將遇到的元素 index-1 設為相反數,因此若遇到該元素已經為負數的情形則代表重複。

程式

1
2
3
4
5
6
7
8
9
10
11
/**
* @param {number[]} nums
* @return {number[]}
*/
var findDuplicates = function(nums) {
return nums.reduce((result, num) => {
const number = Math.abs(num);
nums[number - 1] < 0 ? result.push(number) : nums[number - 1] *= -1 ;
return result;
}, []);
};